package ar.edu.utn.frba.dds.tp.homes;

import java.io.Serializable;
import java.util.List;

import org.uqbar.commons.model.UserException;

import ar.edu.utn.frba.dds.tp.code.vuelos.Vuelo;
import uqbar.arena.persistence.PersistentHome;

public class VuelosHome extends PersistentHome<Vuelo> implements Serializable {

	private static final long serialVersionUID = 1L;

	private static VuelosHome instance = new VuelosHome();
	
	
	public static VuelosHome getInstance() {
		return instance;
	}
	
	public void create(Vuelo vuelo) {
		verificarVueloDuplicado(vuelo);
		super.create(vuelo);
	}
	
	private void verificarVueloDuplicado(Vuelo vuelo) {
		Vuelo example = new Vuelo(vuelo.getCodigoDeVuelo(), vuelo.getOrigenVuelo(), vuelo.getDestinoVuelo(), null, null, null, null);
		example.setAsientos(null);
		if(!this.searchByExample(example).isEmpty())
			throw new UserException("El vuelo " + vuelo.getCodigoDeVuelo() + " ya existe");
	}

	@Override
	public Class<Vuelo> getEntityType() {
		return Vuelo.class;
	}

	@Override
	public Vuelo createExample() {
		return new Vuelo();
	}

	public List<Vuelo> search(String codigoVuelo, String origenVuelo, String destinoVuelo) {
		Vuelo example = new Vuelo(codigoVuelo, origenVuelo,destinoVuelo, null, null, null, null);
		example.setAsientos(null);
		List<Vuelo> searchByExample = this.searchByExample(example);
		return searchByExample;
	}

	
}
